//
// Created by 薛瑄 on 2023/4/9.
//
#ifndef _CMOS_H
#define _CMOS_H
#include "asm/io.h"
/*
 * Yeah, yeah, it's ugly, but I cannot find how to do this correctly
 * and this seems to work. I anybody has more info on the real-time
 * clock I'd be interested. Most of this was trial and error, and some
 * bios-listing reading. Urghh.
 */
// 有关CMOS的信息在7.1.3.1节
// CMOS 的地址空闻在基本地址空间之外，因此其中不包括可执行代码。对其中的数据操作，需要使用两个端口 0x70 是地址端口，0x71 是数据端口。
// 读操作，1、使用 OUT 命令向地址端口 0x70 发送指定字节的偏移位置值，2、使用 IN 指令从数据端口 Ox71读取指定的字节信息。
// 写操作，1、向地址端口 0×70 发送指定字节的偏移值，2、把数据写到数据端口0x71 中去。
#define CMOS_READ(addr) ({ \
outb_p(0x80|addr,0x70); \
inb_p(0x71); \
})
#endif